// ==UserScript==
// @name      测试跨域数据共享User3
// @namespace  http://apz.homepage.com/
// @version    1.0.0
// @description  测试跨域数据共享User3
// @copyright  2023+, You
// @author       You
// @include      *://gitee.com/*
// @icon         images/txt.png
// @require      /js/jquery-3.4.1.js
// @grant       GM_setValue
// @grant       GM_getValue
// @grant       GM_xmlhttpRequest
// @connect     10.254.2.61
// @grant       GM_setValueFromScript
// @grant       GM_sendMsgToScript
// @grant       GM_registerMsgListener 
// ==/UserScript==
// @include：@include 指令用于指定匹配网址的规则。你可以使用通配符 * 匹配部分 URL，或使用正则表达式来匹配特定的页面。
// 例如，@include https://example.com/* 将匹配以 "https://example.com/" 开头的所有网址，而 @include /^https?:\/\/(www\.)?example\.com/ 
// 将匹配所有以 "https://" 或 "http://" 开头、以 "example.com" 结尾的网址。
// @match：@match 指令也用于指定匹配网址的规则，它支持更丰富的匹配模式。@match 使用通配符语法来匹配 URL，其中 * 可以匹配任意字符（除了 /），** 可以匹配任意字符（包括 /）。
//例如，@match https://example.com/* 和 @match *://example.com/* 都将匹配以 "https://example.com/" 开头的所有网址。
//@match https://**.example.com/* 将匹配以 "https://" 开头，以 ".example.com/" 结尾的所有网址。
//https://api.cponline.cnipa.gov.cn/zljffw/fycx/yjfywbl/listyjf-batchhdpage,{zhuanlisqhs: ["2017106745492"], size: 10, current: 1}
(function () {
    // 需要查询的专利列表
    let patentBuyList = [{ patentid: '2019110050048' }, { patentid: '2014107234471' }, { patentid: '2021114837007' }];
    // let patentBuyList = [];
    let page = 1;
    let limit = 10;
    const listUrl = "http://10.254.2.61:8085/api/Payment/GetpaymentList"
    const ClearQueueListUrl = "http://10.254.2.61:8085/api/Payment/ClearQueueList"
    const tmValue = 3000
    Date.prototype.format = function (fmt) {
        var o = {
            "M+": this.getMonth() + 1,                 //月份
            "d+": this.getDate(),                    //日
            "h+": this.getHours(),                   //小时
            "m+": this.getMinutes(),                 //分
            "s+": this.getSeconds(),                 //秒
            "q+": Math.floor((this.getMonth() + 3) / 3), //季度
            "S": this.getMilliseconds()             //毫秒
        };
        if (/(y+)/.test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
        }
        for (var k in o) {
            if (new RegExp("(" + k + ")").test(fmt)) {
                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
            }
        }
        return fmt;
    };
    const initInputDomProto = () => {
        let input = document.querySelector('input');
        let descriper = Object.getOwnPropertyDescriptor(input.__proto__, 'value');
        //取出原先的get和set函数
        let getValue = descriper.get;
        let setValue = descriper.set;
        Object.defineProperty(
            input.__proto__,
            'value',
            {
                configurable: true,
                enumerable: true,
                get: function () {
                    return getValue.call(this);
                },
                // 重写set方法
                set: function () {
                    //console.log('value发生变化',arguments);
                    // 加入通知代码
                    setValue.call(this, ...arguments);
                    //this.focus()
                    this.dispatchEvent(new InputEvent("input"))
                    // this.dispatchEvent(new InputEvent("change"))
                    //this.blur()
                }
            })
    }
    // let callback = function (mutationsList, observer) {
    //     for (let mutation of mutationsList) {
    //         if (mutation.type === "childList") { // 如果是子节点变化
    //             for (let node of mutation.addedNodes) { // 遍历添加的节点
    //                 if (node.nodeType === Node.TEXT_NODE) { // 只处理文本节点
    //                     // 处理文本节点的逻辑
    //                     console.log("文本内容发生了变化：", node.textContent);
    //                 }
    //             }
    //         } else if (mutation.type === "characterData") { // 如果是文本内容变化
    //             console.log("节点发生了变化：", mutation.target.textContent);
    //         }
    //     }
    // }

    // initInputDomProto()
    // // 获取 top顶层节点 元素
    // var inputElement = $('.layui-form.layui-border-box.layui-table-view');
    // const observer = new MutationObserver(callback); // 创建 MutationObserver，指定回调函数
    // // 配置观察器选项
    // const observerConfig = {
    //     childList: true, // 观察子节点的变化
    //     subtree: true, // 观察目标元素的所有子孙节点
    //     characterData: true // 观察文本内容的变化
    // };

    // 启动观察
    // observer.observe(inputElement[0], observerConfig);

    var run = function () {

        GM_sendMsgToScript({method:"userMsg",msg:{cmd:"User3发送",value:900}},['*://cn.bing.com/*','*://code.visualstudio.com/*']).then((ret)=>{
        // GM_sendMsgToScript("这是跨域User3发送的命名",['*://*.gitee.com/*','*://10.254.2.61/*']).then((ret)=>{
            console.log('User3收到结果:',ret);
        }).catch((err)=>{
            console.log('User3收到错误:',err);
        });
        return false        
    }
    GM_registerMsgListener((message, sender, sendResponse) => {
        console.log("User3收到消息:", message);
        sendResponse({ret:0,msg:'User3已收到回复ACK...'+message.msg.value});
    });

    // chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
    //     console.log("跨域页面3收到消息:", message);
    //     sendResponse('跨域页面3已收到回复...');
    // });
})()
